/*
 * Copyright 2024 The ZZZ Archive Open Source Project by mrfatworm
 * License: MIT License
 */

package org.onion.gpt.ui.theme

import androidx.compose.runtime.Immutable
import androidx.compose.ui.graphics.Color

@Immutable
class ColorScheme(
    val primary: Color = Color.Unspecified,
    val onPrimary: Color = Color.Unspecified,
    val primaryContainer: Color = Color.Unspecified,
    val onPrimaryContainer: Color = Color.Unspecified,
    val secondary: Color = Color.Unspecified,
    val onSecondary: Color = Color.Unspecified,
    val border: Color = Color.Unspecified,
    val surface: Color = Color.Unspecified,
    val onSurface: Color = Color.Unspecified,
    val surfaceContainer: Color = Color.Unspecified,
    val onSurfaceContainer: Color = Color.Unspecified,
    val onSurfaceVariant: Color = Color.Unspecified,
    val surfaceLow: Color = Color.Unspecified,
    val alert: Color = Color.Unspecified,
    val onAlert: Color = Color.Unspecified,
    val buttonBorder: Color = Color.Unspecified,
    val hoveredMask: Color = Color.Unspecified,
    val onHoveredMask: Color = Color.Unspecified,
    val onHoveredMaskVariant: Color = Color.Unspecified,
    val rarityD: Color = Color.Unspecified,
    val rarityC: Color = Color.Unspecified,
    val rarityB: Color = Color.Unspecified,
    val rarityA: Color = Color.Unspecified,
    val rarityS: Color = Color.Unspecified,
    val ether: Color = Color.Unspecified,
    val fire: Color = Color.Unspecified,
    val ice: Color = Color.Unspecified,
    val electric: Color = Color.Unspecified,
    val physical: Color = Color.Unspecified,
    val imageBorder: Color = Color.Unspecified,
    val imageBackground: Color = Color.Unspecified,
    val imageTagContainer: Color = Color.Unspecified,
    val imageOnTagContainer: Color = Color.Unspecified,
    val itemVariant: Color = Color(0x10878787)
)

internal val darkScheme = ColorScheme(
    primary = primary500,
    onPrimary = primary950,
    primaryContainer = primary900,
    onPrimaryContainer = primary100,
    secondary = secondary500,
    onSecondary = secondary950,
    border = neutral700,
    surface = neutral950,
    onSurface = neutral200,
    surfaceContainer = neutral900,
    onSurfaceContainer = neutral100,
    onSurfaceVariant = neutral400,
    surfaceLow = neutral800,
    alert = alert700,
    onAlert = alert200,
    buttonBorder = neutral700,
    hoveredMask = Color(0xB3000000),
    onHoveredMask = neutral100,
    onHoveredMaskVariant = neutral200,
    rarityD = Color(0xFF838282),
    rarityC = Color(0xFF7DA89B),
    rarityB = Color(0xFF00A9FF),
    rarityA = Color(0xFFBB37C7),
    rarityS = Color(0xFFFFB500),
    ether = Color(0xFFC33166),
    fire = Color(0xFFF5390A),
    ice = Color(0xFF20D3D9),
    electric = Color(0xFF14ABFF),
    physical = Color(0xFFF3BD01),
    imageBorder = neutral700,
    imageBackground = neutral900,
    imageTagContainer = Color(0x80151515),
    imageOnTagContainer = Color(0xFFF0F0F0),
)

internal val lightScheme = ColorScheme(
    primary = primary600,
    onPrimary = primary50,
    primaryContainer = primary200,
    onPrimaryContainer = primary900,
    secondary = secondary600,
    onSecondary = secondary950,
    border = neutral100,
    surface = neutral100,
    onSurface = neutral800,
    surfaceContainer = neutral50,
    onSurfaceContainer = neutral800,
    onSurfaceVariant = neutral600,
    surfaceLow = neutral50,
    alert = alert600,
    onAlert = alert100,
    buttonBorder = neutral300,
    hoveredMask = Color(0xB3FFFFFF),
    onHoveredMask = neutral900,
    onHoveredMaskVariant = neutral800,
    rarityD = Color(0xFFB5B4B4),
    rarityC = Color(0xFF8DB9AC),
    rarityB = Color(0xFF4BBCF5),
    rarityA = Color(0xFFD862E3),
    rarityS = Color(0xFFF3BC34),
    ether = Color(0xFFE0254A),
    fire = Color(0xFFDA3B14),
    ice = Color(0xFF18A9AF),
    electric = Color(0xFF0C93FF),
    physical = Color(0xFFE09012),
    imageBorder = neutral200,
    imageBackground = neutral100,
    imageTagContainer = Color(0x804A4A4A),
    imageOnTagContainer = Color(0xFFF0F0F0),
)
